Réinitialiser un mot de passe root sous GNU/Linux. par Dec0y ----------------------------------------------------------------------- Sommaire I. Introduction II. Pratique III. Sécurisation IV. Remarque V. Conclusion ----------------------------------------------------------------------- I. Introduction. ================ Dans cet article je vais présenter 3 méthodes permettant de réinitialiser le password root d'un système GNU/Linux. (Applicable seulement avec un accès physique sur la machine concernée) Voici les 3 méthodes qui seront abordées : a) Boot du système en "mode simple utilisateur" (ou 'single-user mode'). b) Utilisation d'un LiveCD. c) Monter le disque à partir d'un PC différent pour éditer le fichier passwd. Puis je présenterais une procédure de sécurisation. II. Pratique. ============= Bon entrons tout de suite dans le vif du sujet :-) A) Boot du système en "mode simple utilisateur". ------------------------------------------------ Nous allons voir comment utiliser cette méthode avec LILO et GRUB. b) LILO. Il faut rebooter l'OS en "single-user mode" : 1) Rebootez le système. Quand LILO apparaît tapez : "LE_NOM_DU_KERNEL single" puis sur la touche "Entrée" ; Exemple -> si le kernel s'appelle 'linux' on tapera : "linux single" puis la touche "Entrée" (et bien sûr sans les guillemets...); En faisant ça le système s'amorcera et vous donnera un shell root; Il se peut que le système vous demande un mot de passe root pour vous loguer en single-user mode; Si c'est le cas (dans la majorité des cas ca n'arrivera pas), au prompt de LILO tapez : 'LE_NOM_DU_KERNEL init=/bin/bash'; 2) Une fois que le système a booté vous aurez un shell avec les droits root; (si vous voulez vérifier que vous êtes en root tapez 'id' vous aurez un truc du genre : 'uid=0(root) gid=0(root) groupes=0(root)'); Maintenant il faut changer le mot de passe à l'aide de la commande 'passwd'; 3) Rebootez le système ('reboot' pour les incultes :D) et loguez vous en root avec le mot de passe que vous venez de définir. b) GRUB. Vous l'aurez compris que là aussi il faut rebooter en "single-user mode" : 1) Rebootez la machine. Quand GRUB apparaît mettez en 'surbrillance' le noyau vous voulez amorçer et appuyez sur la touche 'e'; (Vous aurez un autre écran qui s'affichera); 2) Repérez la ligne qui commence par "kernel=..." mettez là en surbrillance et pressez la touche 'e' (pour passer en mode édition); 3) À la fin de cette ligne ajoutez : 'single' et appuyez sur entrée pour sauvegarder le changement; 4) Ensuite pressez la touche 'b' pour booter; 5) Une fois que l'OS a booté, vous êtes devant un shell avec les droits root (héhé); 6) Maintenant changez le mot de passe à l'aide de la commande 'passwd'; 7) Maintenant rebootez la machine vous pouvez vous loguez en root avec le pass que vous venez de définir. Façile non ? ;) B) Utilisation d'un LiveCD. --------------------------- Pour cette méthode là il nous faut un LiveCD de N'IMPORTE QUELLE distribution. (la démarche reste la même qu'importe le LiveCD choisi). Perso, j'ai utilisé cette méthode avec le LiveCD de GENTOO... Voyons la méthode : 1) Rebootez le système en démarrant avec le LiveCD. 2) Au prompt, créez un repertoire avec le nom que vous voulez, par exemple : "mkdir partoche"; Ce répertoire nous permettra d'y monter le système de fichier. 3) Maintenant il faut monter le disque concerné dans le répertoire que nous venons de créer: "mount /dev/hda3 partoche"; Il vous faudra évidemment remplacez le "/dev/hda3" par le nom du disque que vous voulez monter. (exemple : "/dev/hdb2") 4) Placez vous dans le répertoire "etc" du système de fichier que vous venez de monter : "cd partoche/etc"; 5) Editez le fichier "shadow" avec votre éditeur favori (pour moi c'est 'nano') : "nano -w shadow"; Repérez la ligne avec les informations de l'utilisateur root ça devrait ressembler à ca : root:$1$Kjahz/cH$Dghp1zrSrB.0kEA6634Tv1:12707:0::::: Il faut effacer des informations de la manière suivante : root:$1$Kjahz/cH$Dghp1zrSrB.0kEA6634Tv1:12707:0::::: <- ligne d'origine; root::12707:0::::: <- ligne modifiée; 6) Sauvegardez le fichier et quittez l'éditeur. 7) Démontez le disque : "cd"; "umount partoche"; 8) Rebootez le système normalement et... magie ! Vous pouvez vous loguer en root sans mot de passe ! héhé.. ;) C) Monter le disque à partir d'un PC différent pour éditer le fichier 'shadow'. ------------------------------------------------------------------------------- Enfin la dernière méthode. Si par pur _hasard_ (lol) vous avez un disque dur avec un LINUX dessus et que vous voulez booter avec pour y récupérer des informations, la méthode est la même que ci-dessus sauf que vous faîtes cela à partir de votre système d'exploitation a vous ! Simple non ? :) III. Sécurisation ================= Bien beau tout ça mais comment je peux sécuriser ma linuxb0x ? Après la lecture de ce qui a été écrit jusque là vous vous dites : "Bordel ! c'est aussi facile de hacker ma linuxb0x !! Ya pas un moyen de 'sécuriser' tout ça ?" Mais si bien sûr ! Je vais vous expliquer tout ça dans cette partie ;-). Vous pourriez éditer votre "/etc/inittab" pour y ajouter une ligne de façon à faire en sorte qu'il faut un mot de passe root pour booter "single-user mode". Mais souvenez-vous ce que je vous ai dit plus haut. Il suffirait juste d'ajouter au prompt de lilo le "init=/bin/bash" et hop, I fuck the password ! :D Donc cela serait inutile de vous montrer comment modifier le fichier "/etc/inittab" vu que cette 'protection' est facilement contournable. Cependant vous pouvez protéger votre chargeur de démarage par mot de passe ! Voici la démarche pour LILO (les manip ci-dessous sont à faire en root bien sur.. ;) : a) Editez le fichier "/etc/lilo.conf"; b) Ajoutez-y la ligne suivante avant le premier "image=...." : "password=votre_mot_de_passe" c) Ensuite tapez la commande : lilo -v pour effectuer le changement. d) Changez les droits d'accès sur le fichier "/etc/lilo.conf". Pour faire en sorte que seul l'utilisateur root ai le droit de lire/modifier ce fichier: "chmod 600 /etc/lilo.conf" e) Voilà votre OS est.. disons un peu plus "sécurisé" ;) Maintenant la démarche pour GRUB [toujours en root..] : a) Tapez la commande : "grub-md5-crypt" et pressez la touche entrée. b) Il va vous demandez de saisir un mot de passe puis il vous affichera un "hash MD5" pour votre mot de passe, copiez le dans un TXT vous en aurez besoin.. c) Editez votre fichier "/boot/grub/grub.conf" et ajoutez-y (en première ligne) : "password --md5 le_hash_MD5_de_votre_mot_de_passe" d) Sauvegardez , rebooter et regardez les changements par vous même. ;-) IV. Remarque. ============= Maintenant je fais une petite remarque. Vous conçevez bien évidemment que la méthode 'c' s'avère quasi-"IMPOSSIBLE" si le système de fichier du disque dur est crypté. Justement ci-dessous j'ai mis quelques liens pour savoir comment on crypte un FS sous linux. http://www.saout.de/tikiwiki/tiki-index.php http://docs.linux.com/article.pl?sid=04/06/07/2036205&tid=72&tid=14&tid=35 http://gentoo-wiki.com/SECURITY_Encrypting_Root_Filesystem_with_DM-Crypt (pour les utilisateurs de gentoo :P) Je pense qu'avec ça vous saurez comment on crypte un système de fichier. Et par conséquent vous aurez le moyen de vous protéger de la méthode 'c' V) Conclusion ============= Bon voilà maintenant vous savez comment on efface un mot de passe root sur une machine GNU/Linux. Vous savez aussi comment éviter que cela ne vous arrive en "sécurisant" votre chargeur de démarrage par mot de passe. Et bien sûr vous savez aussi crypter un FS ! (n'est-ce pas ?) ;) Bon j'espère que certains ont trouvé cette article intéressant.. si c'est pas le cas bah euh.. tant pis ! :D Enjoy ! Dec0y